/**
 * 认证相关API
 * @description 登录、注册、忘记密码等认证接口
 */

import { get, post } from '@/utils/modules/request'

/**
 * 获取图形验证码
 * @returns {Promise} 验证码信息 {captchaId, captchaImage}
 */
export const getCaptcha = () => get('/api/captcha/get')

/**
 * 获取短信验证码
 * @param {string} phone - 手机号码
 * @returns {Promise} 发送结果
 */
export const getSmsCaptcha = phone => get('/api/captcha/getSmsCaptcha', { params: { phone } })

/**
 * 获取邮箱验证码
 * @param {string} email - 邮箱地址
 * @returns {Promise} 发送结果
 */
export const getEmailCaptcha = email => get('/api/captcha/getEmailCaptcha', { params: { email } })

/**
 * 用户登录
 * @param {Object} data - 登录数据
 * @param {string} data.username - 用户名/手机号 (必需)
 * @param {string} data.password - 密码 (可选，密码登录时传递)
 * @param {string} data.captcha - 用户输入的验证码 (可选，验证码登录时传递)
 * @param {number} data.loginType - 登录类型 (必需，0:账号密码登录 1:手机号验证码登录)
 * @param {string} data.uniClientId - uni客户端ID (必需)
 * @returns {Promise} 登录结果
 */
export const login = data => post('/api/auth/login', data)

/**
 * 用户注册
 * @param {Object} data - 注册数据
 * @param {string} data.username - 手机号
 * @param {string} data.password - 密码 (6-20位字母数字特殊字符)
 * @param {string} data.inviteCode - 邀请码(可选)
 * @param {string} data.captcha - 短信验证码
 * @param {string} data.uniClientId - uni客户端ID
 * @returns {Promise} 注册结果
 */
export const register = data => post('/api/auth/register', data)

/**
 * 获取验证码
 * @param {string} email - 邮箱/手机号
 * @param {string} type - 验证码类型 (register/forget)
 * @returns {Promise} 发送结果
 */
export const getEmailCode = (email, type) => post('/login/sendcode', { email, type })

/**
 * 重置密码
 * @param {Object} data - 重置密码数据
 * @param {string} data.email - 邮箱/手机号
 * @param {string} data.password - 新密码
 * @param {string} data.code - 验证码
 * @returns {Promise} 重置结果
 */
export const resetPassword = data => post('/login/resetPassword', data)

/**
 * 用户退出登录
 * @returns {Promise} 退出结果
 */
export const logout = () => post('/api/auth/logout')

/**
 * 获取用户信息
 * @param {string} token - 用户token
 * @returns {Promise} 用户信息
 */
export const getUserInfo = token => post('/login/getUser', { token })

/**
 * 获取登录用户详细信息
 * @returns {Promise} 用户详细信息
 */
export const getInfo = () => post('/login/info')

/**
 * 获取用户信息 (新接口)
 * @returns {Promise} 用户信息
 */
export const getUserMsg = () => get('/user/userMsg')

/**
 * 修改密码
 * @param {Object} data - 修改密码数据
 * @param {string} data.oldPassword - 旧密码（必需）
 * @param {string} data.newPassword - 新密码（必需，6-20位字母数字特殊字符）
 * @returns {Promise} 修改结果
 */
export const changePassword = (data) => post('/api/auth/changePassword', data)

/**
 * 忘记密码
 * @param {Object} data - 忘记密码数据
 * @param {string} data.username - 手机号（必需，格式：^1[3-9]\d{9}$）
 * @param {string} data.password - 新密码（必需，8-20位，包含数字和大小写字母，格式：^[a-zA-Z0-9!@#$%^&*]{8,20}$）
 * @param {string} data.captcha - 用户输入的验证码（必需）
 * @returns {Promise} 重置密码结果
 */
export const forgetPassword = (data) => post('/api/auth/forgetPassword', data)
